<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- 
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License. 
-->
<html>
<head>
    <link type="text/css" rel="stylesheet" href="https://struts.apache.org/css/default.css">
    <style type="text/css">
        .dp-highlighter {
            width:95% !important;
        }
    </style>
    <style type="text/css">
        .footer {
            background-image:      url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
            background-repeat:     repeat-x;
            background-position:   left top;
            padding-top:           4px;
            color:                 #666;
        }
    </style>
    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
    <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script>
    <script type="text/javascript">
        SyntaxHighlighter.defaults['toolbar'] = false;
        SyntaxHighlighter.all();
    </script>
    <script type="text/javascript" language="javascript">
        var hide = null;
        var show = null;
        var children = null;

        function init() {
            /* Search form initialization */
            var form = document.forms['search'];
            if (form != null) {
                form.elements['domains'].value = location.hostname;
                form.elements['sitesearch'].value = location.hostname;
            }

            /* Children initialization */
            hide = document.getElementById('hide');
            show = document.getElementById('show');
            children = document.all != null ?
                    document.all['children'] :
                    document.getElementById('children');
            if (children != null) {
                children.style.display = 'none';
                show.style.display = 'inline';
                hide.style.display = 'none';
            }
        }

        function showChildren() {
            children.style.display = 'block';
            show.style.display = 'none';
            hide.style.display = 'inline';
        }

        function hideChildren() {
            children.style.display = 'none';
            show.style.display = 'inline';
            hide.style.display = 'none';
        }
    </script>
    <title>Using Field Validators</title>
</head>
<body onload="init()">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
    <tr class="topBar">
        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a href="core-developers-guide.html">Core Developers Guide</a>&nbsp;&gt;&nbsp;<a href="validation.html">Validation</a>&nbsp;&gt;&nbsp;<a href="using-field-validators.html">Using Field Validators</a>
        </td>
        <td align="right" valign="middle" nowrap>
            <form name="search" action="https://www.google.com/search" method="get">
                <input type="hidden" name="ie" value="UTF-8" />
                <input type="hidden" name="oe" value="UTF-8" />
                <input type="hidden" name="domains" value="" />
                <input type="hidden" name="sitesearch" value="" />
                <input type="text" name="q" maxlength="255" value="" />
                <input type="submit" name="btnG" value="Google Search" />
            </form>
        </td>
    </tr>
</table>

<div id="PageContent">
    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
        <!-- We'll enable this once we figure out how to access (and save) the logo resource -->
        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"-->
        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 2 Documentation</div>
        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Using Field Validators</div>

        <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;">
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14081">
                <img src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Edit Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14081">Edit Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">
                <img src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Browse Space"></a>
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">Browse Space</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14081">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14081">Add Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14081">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add News"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14081">Add News</a>
        </div>
    </div>

    <div class="pagecontent">
        <div class="wiki-content">
            <div id="ConfluenceContent"><h2 id="UsingFieldValidators-Description">Description</h2><p>The followings show a simple example using Struts' Field Validators</p><h3 id="UsingFieldValidators-Step1">Step 1</h3><p>Create the jsp page</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[

&lt;h3&gt;All Field Errors Will Appear Here&lt;/h3&gt;
&lt;s:fielderror/&gt;
&lt;hr/&gt;

&lt;h3&gt;Field Error due to &#39;Required String Validator Field&#39; Will Appear Here&lt;/h3&gt;
&lt;s:fielderror&gt;
    &lt;s:param value=&quot;%{&#39;requiredStringValidatorField&#39;}&quot;/&gt;
&lt;/s:fielderror&gt;
&lt;hr/&gt;

&lt;h3&gt;Field Error due to &#39;String Length Validator Field&#39; Will Appear Here&lt;/h3&gt;
&lt;s:fielderror&gt;
    &lt;s:param&gt;stringLengthValidatorField&lt;/s:param&gt;
&lt;/s:fielderror&gt;
&lt;hr/&gt;

&lt;s:form action=&quot;submitFieldValidatorsExamples&quot; namespace=&quot;/validation&quot; method=&quot;POST&quot; theme=&quot;xhtml&quot;&gt;
    &lt;s:textfield label=&quot;Required Validator Field&quot; name=&quot;requiredValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;Required String Validator Field&quot; name=&quot;requiredStringValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;Integer Validator Field&quot; name=&quot;integerValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;Date Validator Field&quot; name=&quot;dateValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;Email Validator Field&quot; name=&quot;emailValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;URL Validator Field&quot; name=&quot;urlValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;String Length Validator Field&quot; name=&quot;stringLengthValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;Regex Validator Field&quot; name=&quot;regexValidatorField&quot;/&gt;
    &lt;s:textfield label=&quot;Field Expression Validator Field&quot; name=&quot;fieldExpressionValidatorField&quot;/&gt;
    &lt;s:submit label=&quot;Submit&quot; cssClass=&quot;btn btn-primary&quot;/&gt;
&lt;/s:form&gt;

]]></script>
</div></div><h3 id="UsingFieldValidators-Step2">Step 2</h3><p>Create the action class</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 */
public class FieldValidatorsExampleAction extends AbstractValidationActionSupport {

    private static final long serialVersionUID = -4829381083003175423L;

    private String requiredValidatorField = null;
    private String requiredStringValidatorField = null;
    private Integer integerValidatorField = null;
    private Date dateValidatorField = null;
    private String emailValidatorField = null;
    private String urlValidatorField = null;
    private String stringLengthValidatorField = null;
    private String regexValidatorField = null;
    private String fieldExpressionValidatorField = null;


    public Date getDateValidatorField() {
        return dateValidatorField;
    }

    public void setDateValidatorField(Date dateValidatorField) {
        this.dateValidatorField = dateValidatorField;
    }

    public String getEmailValidatorField() {
        return emailValidatorField;
    }

    public void setEmailValidatorField(String emailValidatorField) {
        this.emailValidatorField = emailValidatorField;
    }

    public Integer getIntegerValidatorField() {
        return integerValidatorField;
    }

    public void setIntegerValidatorField(Integer integerValidatorField) {
        this.integerValidatorField = integerValidatorField;
    }

    public String getRegexValidatorField() {
        return regexValidatorField;
    }

    public void setRegexValidatorField(String regexValidatorField) {
        this.regexValidatorField = regexValidatorField;
    }

    public String getRequiredStringValidatorField() {
        return requiredStringValidatorField;
    }

    public void setRequiredStringValidatorField(String requiredStringValidatorField) {
        this.requiredStringValidatorField = requiredStringValidatorField;
    }

    public String getRequiredValidatorField() {
        return requiredValidatorField;
    }

    public void setRequiredValidatorField(String requiredValidatorField) {
        this.requiredValidatorField = requiredValidatorField;
    }

    public String getStringLengthValidatorField() {
        return stringLengthValidatorField;
    }

    public void setStringLengthValidatorField(String stringLengthValidatorField) {
        this.stringLengthValidatorField = stringLengthValidatorField;
    }

    public String getFieldExpressionValidatorField() {
        return fieldExpressionValidatorField;
    }

    public void setFieldExpressionValidatorField(
            String fieldExpressionValidatorField) {
        this.fieldExpressionValidatorField = fieldExpressionValidatorField;
    }

    public String getUrlValidatorField() {
        return urlValidatorField;
    }

    public void setUrlValidatorField(String urlValidatorField) {
        this.urlValidatorField = urlValidatorField;
    }
}

/**
]]></script>
</div></div><h3 id="UsingFieldValidators-Step3">Step 3</h3><p>Create the validator.xml.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
  		
&lt;validators&gt;
	&lt;field name=&quot;requiredValidatorField&quot;&gt;
		&lt;field-validator type=&quot;required&quot;&gt;
			&lt;message&gt;&lt;![CDATA[ required ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;requiredStringValidatorField&quot;&gt;
		&lt;field-validator type=&quot;requiredstring&quot;&gt;
			&lt;param name=&quot;trim&quot;&gt;true&lt;/param&gt;
			&lt;message&gt;&lt;![CDATA[ required and must be string ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;integerValidatorField&quot;&gt;
		&lt;field-validator type=&quot;int&quot;&gt;
			&lt;param name=&quot;min&quot;&gt;1&lt;/param&gt;
			&lt;param name=&quot;max&quot;&gt;10&lt;/param&gt;
			&lt;message&gt;&lt;![CDATA[ must be integer min 1 max 10 if supplied ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;dateValidatorField&quot;&gt;
		&lt;field-validator type=&quot;date&quot;&gt;
			&lt;param name=&quot;min&quot;&gt;01/01/1990&lt;/param&gt;
			&lt;param name=&quot;max&quot;&gt;01/01/2000&lt;/param&gt;
			&lt;message&gt;&lt;![CDATA[ must be a min 01-01-1990 max 01-01-2000 if supplied ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;emailValidatorField&quot;&gt;
		&lt;field-validator type=&quot;email&quot;&gt;
			&lt;message&gt;&lt;![CDATA[ must be a valid email if supplied ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;urlValidatorField&quot;&gt;
		&lt;field-validator type=&quot;url&quot;&gt;
			&lt;message&gt;&lt;![CDATA[ must be a valid url if supplied ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;stringLengthValidatorField&quot;&gt;
		&lt;field-validator type=&quot;stringlength&quot;&gt;
			&lt;param name=&quot;maxLength&quot;&gt;4&lt;/param&gt;
			&lt;param name=&quot;minLength&quot;&gt;2&lt;/param&gt;
			&lt;param name=&quot;trim&quot;&gt;true&lt;/param&gt;
			&lt;message&gt;&lt;![CDATA[ must be a String of a specific greater than 1 less than 5 if specified ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;regexValidatorField&quot;&gt;
		&lt;field-validator type=&quot;regex&quot;&gt;
			&lt;param name=&quot;regex&quot;&gt;&lt;![CDATA[ [^&lt;&gt;]+ ]]&gt;&lt;/param&gt;
			&lt;message&gt;&lt;![CDATA[ regexValidatorField must match a regexp (.*\.txt) if specified ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
	&lt;field name=&quot;fieldExpressionValidatorField&quot;&gt;
		&lt;field-validator type=&quot;fieldexpression&quot;&gt;
			&lt;param name=&quot;expression&quot;&gt;(fieldExpressionValidatorField == requiredValidatorField)&lt;/param&gt;
			&lt;message&gt;&lt;![CDATA[ must be the same as the Required Validator Field if specified ]]&gt;&lt;/message&gt;
		&lt;/field-validator&gt;
	&lt;/field&gt;
&lt;/validators&gt;

]]></script>
</div></div></div>
        </div>

        
    </div>
</div>
<div class="footer">
    Generated by CXF SiteExporter
</div>
</body>
</html>
